import 'package:flutter/material.dart';

/// # FileExplorerThemeData
///
/// 文件资源管理器（FileExplorer）的主题配置类。
///
/// 用于统一控制外观：背景、文字、颜色、行高、动画时长等。
/// 可根据需求扩展更多字段。
///
/// ## 使用方式
/// 在构建 [FileExplorer] 时传入：
/// ```dart
/// FileExplorerThemeData theme = const FileExplorerThemeData(
///   backgroundColor: Colors.white,
///   selectionColor: Colors.blueAccent,
///   rowHeight: 28,
/// );
///
/// FileExplorer(
///   roots: roots,
///   theme: theme,
/// )
/// ```
class FileExplorerThemeData {
  /// 整个文件浏览器的背景色
  final Color backgroundColor;

  /// 头部区域的背景色（如果有工具栏/标题栏）
  final Color headerBackgroundColor;

  /// 头部分隔线的颜色
  final Color headerDividerColor;

  /// 鼠标悬停在行上的背景色
  final Color hoverColor;

  /// 行被选中时的背景色
  final Color selectionColor;

  /// 普通文本颜色
  final Color textColor;

  /// 次要文本颜色（文件大小、修改时间等辅助信息）
  final Color secondaryTextColor;

  /// 文件夹图标的默认颜色
  final Color folderColor;

  /// 文件图标的默认颜色（未匹配扩展名时使用）
  final Color fileColorDefault;

  /// 每一行的高度（文件/文件夹项的行高）
  final double rowHeight;

  /// 展开/收起等动画的持续时间
  final Duration animationDuration;

  /// 构造函数，所有字段都有默认值，可按需覆盖。
  const FileExplorerThemeData({
    this.backgroundColor = Colors.white,
    this.headerBackgroundColor = const Color(0xFFF5F5F5),
    this.headerDividerColor = const Color(0xFFE0E0E0),
    this.hoverColor = const Color(0xFFEAF2FF),
    this.selectionColor = const Color(0xFFCCE5FF),
    this.textColor = Colors.black87,
    this.secondaryTextColor = Colors.black54,
    this.folderColor = const Color(0xFFFFB74D),
    this.fileColorDefault = const Color(0xFF757575),
    this.rowHeight = 26,
    this.animationDuration = const Duration(milliseconds: 180),
  });
}
